package biblioGraphiqueV2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingConstants;
/**
 * Fenêtre principale de l'application Bibliothèque avec le menu 
 * @author IUT,  A.Culet 
 * @version 1.0
 */
public class VueMenuBiblio  extends Vue{
	
	private static final long serialVersionUID = 1L;
	private JFrame frame;

	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************
	public VueMenuBiblio(Controleur controleur) {
		super (controleur);
		this.initialize();
	} // Fin Constructeur

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		this.setTitle("Gestion de bibliothèque");
		setBounds(100, 100, 564, 340);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
		addWindowListener (new WindowAdapter() {
			public void windowClosing (WindowEvent e) {
				getControleur().fermerVue(VueMenuBiblio.this);
			}
		});
		getContentPane().setLayout(null);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setBounds(24, 24, 350, 21);
		getContentPane().add(menuBar);
		
		JMenu mnApplication = new JMenu("Application");
		mnApplication.setHorizontalAlignment(SwingConstants.LEFT);
		menuBar.add(mnApplication);
		
		JMenuItem menuItemQuitter = new JMenuItem("Quitter");
		menuItemQuitter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueMenuBiblio.this);
				}		
		});
		mnApplication.add(menuItemQuitter);
		
		JMenu mnOuvrage = new JMenu("Ouvrage");
		menuBar.add(mnOuvrage);
		
		JMenuItem MenuItemOuv = new JMenuItem("Nouvel Ouvrage");
		
		MenuItemOuv.addActionListener(new ActionListener()
		 {
			@Override
			public void actionPerformed(ActionEvent event) {
				//  affichage de la fenetre de saisie d'un ouvrage
				getControleur(). saisirOuvrage() ;}
		});
		
		mnOuvrage.add(MenuItemOuv);
		
		JMenuItem menuItemConsult = new JMenuItem("Consulter Ouvrage");
		menuItemConsult.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
				getControleur(). consulterOuvrage() ;}
		});
		mnOuvrage.add(menuItemConsult);
		
		
		
		/*mnOuvrage.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
		});	*/
		
		

		JMenuItem MenuItemRechercherParAuteur = new JMenuItem("Rechercher Par Auteur");
		MenuItemRechercherParAuteur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//affichage de la fenêtre de recherche par auteur
				getControleur().rechercherParAuteur();
			}
		});
		mnOuvrage.add(MenuItemRechercherParAuteur);
		
		JMenu mnExmplaire = new JMenu("Exemplaire");
		mnOuvrage.add(mnExmplaire);
		
				JMenuItem MenuItemExemp = new JMenuItem("Nouvel exemplaire");
				mnExmplaire.add(MenuItemExemp);
				

				JMenuItem mntmEmprunterExemplaire = new JMenuItem("Emprunter Exemplaire");
				mnExmplaire.add(mntmEmprunterExemplaire);
				
				JMenuItem mntmEmprunterExemplaireReserve = new JMenuItem("Emprunter Exemplaire Réservé");
				mnExmplaire.add(mntmEmprunterExemplaireReserve);
				

				JMenuItem mntmRetournerExemplaire = new JMenuItem("Retourner Exemplaire");
				mnExmplaire.add(mntmRetournerExemplaire);
				mntmRetournerExemplaire.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						getControleur().retourExemplaire();
					}
				});
				mntmEmprunterExemplaireReserve.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						getControleur().empruntExemplaireReserve();
					}
				});
				mntmEmprunterExemplaire.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						getControleur().empruntExemplaire();
					}
				});
				MenuItemExemp.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						//  affichage de la fenetre de saisie d'un exemplaire
						getControleur(). saisirExemplaire() ;}
				});
		
		JMenu mnRservation = new JMenu("Réservation");
		mnOuvrage.add(mnRservation);
		

		JMenuItem mntmResOuvrage = new JMenuItem("Réservation Ouvrage Emprunté");
		mnRservation.add(mntmResOuvrage);
		
				
				JMenuItem mntmSuprimerReservation = new JMenuItem("Supprimer Réservation Périmée");
				mnRservation.add(mntmSuprimerReservation);
				mntmSuprimerReservation.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e){
						getControleur().suprimerRes();
					}
				});
				mntmResOuvrage.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {						
						getControleur().reservationOuvrage();
					}
				});

		

		JMenu mnQuota = new JMenu("Quota");
		menuBar.add(mnQuota);
		
		JMenuItem mntmParametrerQuota = new JMenuItem("Paramétrer Quota");
		mntmParametrerQuota.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().parametrerQuotas();
			}
		});
		
		mnQuota.add(mntmParametrerQuota);
		
		JMenu mnPeriodique = new JMenu("Périodique");
		menuBar.add(mnPeriodique);
		
		JMenuItem mntmSaisirPeriodique = new JMenuItem("Saisir Périodique");
		mntmSaisirPeriodique.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().nouveauPeriodique();
			}
		});
		
		mnPeriodique.add(mntmSaisirPeriodique);
		
		JMenuItem mntmSaisirParution = new JMenuItem("Saisir Parution");
		mntmSaisirParution.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().nouvelleParution();
			}
		});
		mnPeriodique.add(mntmSaisirParution);
		
		JMenuItem mntmConsulterPeriodique = new JMenuItem("Consulter Périodique");
		mntmConsulterPeriodique.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().consulterPeriodique();
			}
		});
		
		mnPeriodique.add(mntmConsulterPeriodique);
		setVisible(true);
		
		
		JMenu mnLecteur = new JMenu("Lecteur");
		menuBar.add(mnLecteur);
		
		JMenuItem MenuItemSaisirLecteur = new JMenuItem("Nouveau Lecteur");
		MenuItemSaisirLecteur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//affichage de la fenêtre de saisie d'un nouveau lecteur
				getControleur().saisirLecteur();
			}
		});
		mnLecteur.add(MenuItemSaisirLecteur);
		
		JMenuItem MenuItemConsultLecteur = new JMenuItem("Consulter Lecteur");
		MenuItemConsultLecteur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//affichage de la fenêtre de saisie d'un nouveau lecteur
				getControleur().consulterLecteur();
			}
		});
		mnLecteur.add(MenuItemConsultLecteur);
	}
	
	/**
	 * méthode exécutée lorsque la croix de fermeture de la fenêtre a été cliquée
	 */
	public void windowClosing (WindowEvent e) {
		getControleur().fermerVue(VueMenuBiblio.this);
	}
}
